package com.xiaoshuidi.cloud.module.finance.dal.dataobject.finance;

import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import com.xiaoshuidi.cloud.framework.mybatis.core.dataobject.DeptFilter;
import com.xiaoshuidi.cloud.framework.tenant.core.db.TenantBaseDO;
import lombok.*;

import java.time.LocalDate;
import java.util.List;


@TableName(value = "finance_bank_transfer", autoResultMap = true)
@Data
@EqualsAndHashCode
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class FinanceBankTransferDO extends TenantBaseDO implements DeptFilter {
    @TableId
    private Integer id;
    /**
     * 业务日期
     */
    private LocalDate bizDate;
    /**
     * 业务类别号(金蝶维护)
     */
    private String businessTypeNo;
    /**
     * 业务类别(金蝶维护)
     */
    private String businessType;
    /**
     * 门店(金蝶维护)
     */
    private String department;
    /**
     * 公司名称(金蝶维护)
     */
    private String company;
    /**
     * 门店id(需同步金蝶)
     */
    private Long apartmentId;
    /**
     * 房源名称
     */
    private String roomName;
    /**
     * 房源id
     */
    private Long roomId;
    /**
     * 经办人
     */
    private String operator;
    /**
     * 付款单号
     */
    private String number;
    /**
     * 收款人
     */
    private String payeeName;
    /**
     * 收款方(租客/房东)
     */
    private String payeeType;
    /**
     * 收款方手机号
     */
    private String payeeMobile;
    /**
     * 付款金额
     */
    private java.math.BigDecimal payAmount;
    /**
     * 收款银行名
     */
    private String payeeBank;
    /**
     * 收款银行支行名(金蝶维护)
     */
    private String payeeBankBranch;
    /**
     * 收款银行行号(金蝶维护)
     */
    private String payeeBankCode;
    /**
     * 收款银行所在省(金蝶维护)
     */
    private String payeeBankProvince;
    /**
     * 收款银行所在市
     */
    private String payeeBankCity;
    /**
     * 收款账号
     */
    private String payeeBankAccount;
    /**
     * {@link com.xiaoshuidi.cloud.module.finance.enums.order.BankTransferStatusEnum}
     */
    private String status;
    /**
     * 付款成功日期
     */
    private java.time.LocalDateTime payTime;
    /**
     * 事由
     */
    private String reason;
    /**
     * 备注
     */
    private String remark;
    /**
     * 合同编号
     */
    private String contractNo;
    /**
     * 关联相关单号
     */
    private String bizNo;
    private String bizType;
    @TableField(typeHandler = JacksonTypeHandler.class)
    private List<Object> logs;
    @TableField(fill = FieldFill.INSERT)
    private Long deptId;
    private String attachment;

    /**
     * 导出次数
     */
    private Integer exportCount;

    /**
     * 是否更正
     * 1 已更正 0未更正
     */
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private Integer isChange;
}
